package com.me.study.JVM;

import com.me.common.util.SleepUtil;

import java.util.HashMap;
import java.util.Map;

/**
 * 配置 VM options：   <p>
 * -Xms15m -Xmx15m -XX:+PrintGCDetails -XX:SurvivorRatio=3 -XX:+PrintGCTimeStamps -Xloggc:D:/gc.log -XX:NewRatio=2 -XX:+UseSerialGC     <p>
 * -XX:+PrintFlagsFinal     <p></p>
 *
 * 1，OutOfMemoryError 测试    <p>
 * 2，模拟 GC 日志，并获得 GC日志文件    <p>
 *
 * @author ME
 * @date   2020/5/30
 */
public class TestMemoryAnalyzer {

    /**
     * 声明 GC ROOTS
      */
    private static final Map<String, Object> MAP = new HashMap<>();

    /**
     * 需要配置 VM options
     */
    public static void main(String[] args) {
        // IDEA安装 VisualVM Launcher 插件可以运行时自动打开 VisualVM，可以不需要运行前 sleep()
        SleepUtil.seconds(2);
        System.out.println("start\n");

        // 循环添加对象到缓存
        for (int i = 0; i < 1000; i++) {
        // for (int i = 0; i < 100000; i++) {
            Animal t = new Animal();
            MAP.put("key" + i, t);
            SleepUtil.ms(100);
        }

        System.out.println("qqqq");
        SleepUtil.ms(Integer.MAX_VALUE);
    }

    public static class Animal {
        private byte[] _256k = new byte[64 * 1024];
    }
    
}
